//
//  NTParallxView.m
//  ParallaxScorllView
//
//  Created by demon on 7/6/13.
//  Copyright (c) 2013 demon. All rights reserved.
//

#import "CYTableview.h"

@interface CYTableView()

@property (nonatomic, strong) UITableView  * tableView;
//@property (nonatomic, assign) CGFloat backWindowHeight;
//@property (nonatomic, strong) UIView *backView;
@end

@implementation CYTableView
-(id)initWithBounds:(CGRect)bounds backGroundView:(UIView *)view dataSource:(id<CYTableViewDataSource>)dataSource delegate:(id<CYTableViewDelegate>)deleagte{
    self = [super init];
    if (self){
        // Initialization code
        self.cy_tableView_dataSource = dataSource;
        self.cy_tableView_delegate = deleagte;
        self.bounds = bounds;
        [self addSubview:view];
    }
    return self;
}
- (UITableView *)tableView{
    if (!_tableView) {
        _tableView = [[UITableView alloc]init];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        _tableView.backgroundColor = [UIColor clearColor];
        _tableView.separatorStyle = UITableViewCellSelectionStyleNone;
        [self addSubview:_tableView];
        [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(self).with.offset(0);
            make.bottom.equalTo(self.mas_bottom).with.offset(0);
            make.centerX.equalTo(self);
            make.width.mas_equalTo(SCREEN_WIDTH);
        }];
    }
    return _tableView;
}

- (void)setBackViewHeight:(CGFloat)backViewHeight{
    if (_backViewHeight != backViewHeight)
        _backViewHeight = backViewHeight;
    _tableView.contentOffset = CGPointMake(0, _backViewHeight);
}

#pragma mark CYTableViewProtocol Methods

-(void)reloadData{
    [_tableView reloadData];
}

-(NSIndexPath*)reconstructIndexPath:(NSIndexPath*)indexPath{
    return [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section + 1];
}
#pragma mark UITableViewDataSource Methods

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if(!section)
        return 1;
    return [_cy_tableView_dataSource cy_tableView:_tableView numberOfRowsInSection:section-1];
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return [_cy_tableView_dataSource numberOfSectionsInCYTableView:_tableView]+1;
}

static NSString * identify =@"IdentifyForTableView";
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(!indexPath.section) {
        UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identify];
        if(!cell){
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identify];
            cell.backgroundColor             = [UIColor clearColor];
            cell.contentView.backgroundColor = [UIColor clearColor];
            cell.selectionStyle              = UITableViewCellSelectionStyleNone;
        }
        return cell;
    }
    else
        return [_cy_tableView_dataSource cy_tableView:_tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section + 1]];
}

#pragma mark UITableViewDelegate Methods
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSAssert(_backViewHeight > 0, @"第一个cell的高度_backViewHeight不能等于0");
    if(!indexPath.section)
        return _backViewHeight;
    NSIndexPath *indexPathParallax  = [self reconstructIndexPath:indexPath];
    return [_cy_tableView_delegate cy_tableView:_tableView
                        heightForRowAtIndexPath:indexPathParallax];
}

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    if(!section)
        return 0;
    return [_cy_tableView_delegate cy_tableView:_tableView
                       heightForHeaderInSection:section-1];
}

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    if(!section)
        return nil;
    return [_cy_tableView_delegate cy_tableView:_tableView
                         viewForHeaderInSection:section-1];
}

#pragma mark UIScrollViewDelegte Method

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //    CGFloat yOffset   = _tableView.contentOffset.y;
    //    CGFloat xOffset   = _sv_transparent.contentOffset.x;
    //    CGFloat threshold = _imageHeight-_backWindowHeight;
    //    //    NSLog(@"yoffset %f  xoffset  %f   thr  %f",yOffset, xOffset, threshold);
    //    if (yOffset > -threshold && yOffset < 0) {
    //        //UITableView往下滑动的时候
    //        _sv_images.contentOffset = CGPointMake(xOffset, floorf(yOffset / 2.0));
    //    } else if (yOffset < 0) {
    //        //UItableView往下滑动拖拽(sv_images出界的情况)
    //        _tableView.contentOffset =CGPointMake(0, -100);
    //    } else {
    //        //UITableView往上滑动的时候
    //        //        _sv_images.contentOffset = CGPointMake(xOffset, yOffset);
    //    }
}

@end
